return {
  {
    -- 编辑器直接显示图片
    -- 需要安装luarocks
    "3rd/image.nvim",
    enabled = true,
    build = false,
    opts = {
      backend = "ueberzug", -- Use "ueberzug" if not using Kitty
      processor = "magick_cli", -- Default processor
      integrations = {
        markdown = {
          enabled = true,
          clear_in_insert_mode = false,
          download_remote_images = true,
          only_render_image_at_cursor = true, -- true:悬浮框false:直接显示
          only_render_image_at_cursor_mode = "popup", -- or "inline"
        },
      },
    },
  },

  {
    -- 终端实时渲染
    "MeanderingProgrammer/render-markdown.nvim",
    dependencies = { "nvim-treesitter/nvim-treesitter", "nvim-mini/mini.nvim" }, -- if you use the mini.nvim suite
    -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-mini/mini.icons' },        -- if you use standalone mini plugins
    -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons
    ---@module 'render-markdown'
    ---@type render.md.UserConfig
    opts = {

      heading = {
        -- Useful context to have when evaluating values.
        -- | level    | the number of '#' in the heading marker         |
        -- | sections | for each level how deeply nested the heading is |

        icons = { " 󰼏 ", " 󰎨 ", " 󰼑 ", " 󰎲 ", " 󰼓 ", " 󰎴 " },

        border = true,
        -- Turn on / off heading icon & background rendering.
        enabled = true,
        -- Additional modes to render headings.
        -- 插入模式下true：不改变normal状态,false：改变normal状态
        render_modes = true,
        -- Turn on / off atx heading rendering.
        atx = true,
        -- Turn on / off setext heading rendering.
        setext = true,
        -- Turn on / off sign column related rendering.
        sign = false,
        -- Determines how icons fill the available space.
        -- | right   | '#'s are concealed and icon is appended to right side                      |
        -- | inline  | '#'s are concealed and icon is inlined on left side                        |
        -- | overlay | icon is left padded with spaces and inserted on left hiding additional '#' |
        position = "inline",
      },
      pipe_table = {
        -- Turn on / off pipe table rendering.
        enabled = true,
        -- Additional modes to render pipe tables.

        border = { "╭", "┬", "╮", "├", "┼", "┤", "╰", "┴", "╯", "│", "─" },

        -- 表格根据视图自适应显示
        cell = 'trimmed',

        -- 对齐显示
        alignment_indicator = '┅',

        render_modes = true,
        -- Pre configured settings largely for setting table border easier.
        -- | heavy  | use thicker border characters     |
        -- | double | use double line border characters |
        -- | round  | use round border corners          |
        -- | none   | does nothing                      |
        preset = "none",
      },

      anti_conceal = {
        disabled_modes = { "n" },
        ignore = {
          bullet = true, -- render bullet in insert mode
          head_border = true,
          head_background = true,
        },
      },

      win_options = { concealcursor = { rendered = "nvc" } },
      completions = {
        blink = { enabled = true },
        lsp = { enabled = true },
      },

      code = {
        -- general
        width = "block",
        min_width = 100,
        render_modes = true,
        -- borders
        border = "thin",
        left_pad = 1,
        right_pad = 1,
        -- language info
        position = "left",
        language_icon = true,
        language_name = true,
        -- avoid making headings ugly
        highlight_inline = "RenderMarkdownCodeInfo",
      },

      checkbox = {

        render_modes = true,
      },

      link = {
        render_modes = true,
      },
    },
  },

  {
    -- a Vim plugin for automated bullet lists
    "bullets-vim/bullets.vim",
    ft = { "markdown" },
    -- Ctrl-t：下一级；
    -- Ctrl-d：下一级；
  },

  {
    -- 自动在当前光标生成目录的插件
    -- 配置文件和快捷键在keymaps中
    "mzlogin/vim-markdown-toc",
    enabled = true,
    config = function()
      vim.g.vmt_auto_update_on_save = 1
      vim.keymap.set("n", "<leader>tm", ":GenTocGitLab<CR>", {})
      vim.keymap.set("n", "<leader>tu", ":UpdateToc<CR>", {})
      vim.keymap.set("n", "<leader>tr", ":RemoveToc<CR>", {})
    end,
  },
}
